// 需求：封装一个函数，接收两个参数，一个是长度，一个是数组内填充内容，构建一个新的数组，并且返回

// function createArr(length, value) {
//     const arr = []

//     for (let i = 0; i < length; i++) {
//         arr.push(value)
//     }
//     return arr
// }


// 添加ts类型校验
// function createArr(length: number, value: any): any[] {
//     const arr: any[] = []

//     for (let i = 0; i < length; i++) {
//         arr.push(value)
//     }
//     return arr
// }

// const arr1 = createArr(3, '数组填充')
// console.log(arr1);

// const arr2 = createArr(5, true);
// console.log(arr2); // [true, true, true, true, true]

// const arr3 = createArr(2, 10086);
// console.log(arr3); // [10086, 10086]

// const arr4 = createArr(3, { text: "对象用于填充数组" });
// console.log(arr4)


// 利用泛型优化
function createArr<T>(length: number, value: T): T[] {
    // 根据形参创建一个数组
    const arr: T[] = []

    for (let i = 0; i < length; i++) {
        arr.push(value)
    }
    return arr
}

const arr1: string[] = createArr<string>(3, '数组填充')
console.log(arr1);

const arr2: boolean[] = createArr<boolean>(5, true);
console.log(arr2); // [true, true, true, true, true]

const arr3: number[] = createArr<number>(2, 10086);
console.log(arr3); // [10086, 10086]

interface IObj {
    text: string;
}
const arr4: IObj[] = createArr<IObj>(3, { text: '对象用于填充数组' });
console.log(arr4)
